home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
PPESCR17.ZIP
/
PPE-SCR.PPE
(
.txt
)
< prev
Wrap
PCBoard Programming Language Executable
|
1994-11-01
|
19KB
|
1,261 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Boolean BOOLEAN006
Boolean BOOLEAN007
Boolean BOOLEAN008
Boolean BOOLEAN009
Boolean BOOLEAN010
Boolean BOOLEAN011
Boolean BOOLEAN012
Boolean BOOLEAN013
Boolean BOOLEAN014
Boolean BOOLEAN015
Boolean BOOLEAN016
Boolean BOOLEAN017
Boolean BOOLEAN018
Boolean BOOLEAN019
Boolean BOOLEAN020
Boolean BOOLEAN021
Boolean BOOLEAN022
Date DATE002
Date DATE003
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer TINTEGER006(5)
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String TSTRING015(5)
String STRING016
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING027
String STRING028
String STRING029
String STRING030
String STRING031
String STRING032
String STRING033
String STRING034
String STRING035
String STRING036
String STRING037
String STRING038
String STRING039
String STRING040
String STRING041
String STRING042
String STRING043
String STRING044
String STRING045
String STRING046
String STRING047
String STRING048
String STRING049
String STRING050
String STRING051
String STRING052
String STRING053
String STRING054
String STRING055
Byte BYTE001
Byte BYTE002
Byte BYTE003
Byte BYTE004
Byte BYTE005
Byte BYTE006
Byte BYTE007
Byte BYTE008
Byte BYTE009
Byte BYTE010
Byte BYTE011
Byte BYTE012
Byte BYTE013
Byte TBYTE014(4)
Byte TBYTE015(20)
Byte BYTE016
Byte BYTE017
Byte BYTE018
Byte BYTE019
Byte BYTE020
Byte BYTE021
Byte BYTE022
Byte BYTE023
Byte BYTE024
Byte BYTE025
Byte BYTE026
Byte BYTE027
Int INT001
Int INT002
Int INT003
Int INT004
Int INT005
Int INT006
Int INT007
Int INT008
Int INT009
;------------------------------------------------------------------------------
INT008 = 179
STRING012 = Chr(13) + Chr(10)
STRING054 = Chr(34)
STRING055 = STRING054 + "," + STRING054
STRING033 = Replace(Space(60), " ", "=")
STRING034 = Replace(Space(60), " ", "-")
STRING039 = Chr(255)
TBYTE014(1) = 10
TBYTE014(2) = 16
TBYTE014(3) = 8
TBYTE014(4) = 2
BYTE024 = 0
BOOLEAN013 = 0
TBYTE015(1) = 30
TBYTE015(2) = 30
TBYTE015(3) = 15
TBYTE015(4) = 60
TBYTE015(5) = 60
TBYTE015(6) = 60
TBYTE015(7) = 60
TBYTE015(8) = 60
TBYTE015(9) = 50
TBYTE015(10) = 50
TBYTE015(11) = 25
TBYTE015(12) = 10
TBYTE015(13) = 10
TBYTE015(14) = 15
TBYTE015(15) = 25
TBYTE015(16) = 25
TBYTE015(17) = 12
TBYTE015(18) = 24
TBYTE015(19) = 13
TBYTE015(20) = 13
Newline
STRING027 = "@X0FPPE-Script v1.70 (11-01-94) - PCBoard Scripting Program"
STRING028 = "@X0FCopyright (C) 1993,1994 Gary Meeker. All Rights Reserved."
PrintLn STRING027
PrintLn STRING028
Newline
GetUser
GetToken STRING006
BYTE007 = 1
BOOLEAN020 = 0
If (STRING006 == "") STRING006 = PPEPath() + PPEName() + ".CNF"
If (Exist(STRING006)) Goto LABEL001
If (Exist(PPEPath() + STRING006)) Then
STRING006 = PPEPath() + STRING006
Else
STRING027 = "PPE-Script: Missing Config file: " + STRING006
PrintLn STRING027
Log STRING027, 0
Stop
Endif
:LABEL001
FOpen 1, STRING006, 0, 0
FGet 1, STRING007
FGet 1, STRING038
FGet 1, INTEGER004
FGet 1, STRING008
FGet 1, STRING027
Tokenize STRING027
GetToken BYTE013
GetToken INT001
GetToken INT002
Gosub LABEL010
FGet 1, STRING027
Tokenize STRING027
GetToken BYTE011
GetToken INT006
GetToken BYTE009
GetToken STRING009
FGet 1, STRING027
Tokenize STRING027
GetToken BOOLEAN001
GetToken BOOLEAN002
GetToken BOOLEAN003
GetToken BOOLEAN004
Gosub LABEL008
BYTE019 = BYTE018
Gosub LABEL008
BYTE020 = BYTE018
GetToken BOOLEAN005
FGet 1, STRING027
Tokenize STRING027
GetToken BOOLEAN008
GetToken BOOLEAN009
GetToken BOOLEAN010
Gosub LABEL008
BYTE021 = BYTE018
Gosub LABEL008
BYTE022 = BYTE018
Gosub LABEL008
BYTE023 = BYTE018
FGet 1, STRING010
FGet 1, STRING011
FGet 1, STRING013
FGet 1, STRING014
FGet 1, TSTRING015(BYTE007)
FGet 1, STRING016
FGet 1, STRING044
FGet 1, STRING027
Tokenize Replace(STRING027, " ", Chr(255))
STRING049 = Replace(GetToken(), Chr(255), " ")
GetToken STRING050
GetToken STRING051
GetToken STRING052
GetToken BOOLEAN014
FClose 1
If (STRING050 == "") STRING050 = "P"
If (STRING051 == "") STRING051 = "O"
If (BYTE013 == 0) BYTE013 = 3
If (STRING014 == "") STRING014 = PPEPath()
If (BYTE019 == 0) BYTE019 = DefColor()
If (BYTE020 == 0) BYTE020 = DefColor()
If (BYTE021 == 0) BYTE021 = DefColor()
If (BYTE022 == 0) BYTE022 = DefColor()
If (BYTE023 == 0) BYTE023 = DefColor()
If (STRING009 == "") STRING009 = "MF"
STRING023 = " "
BYTE010 = 1
Gosub LABEL014
STRING032 = Upper(STRING023)
STRING023 = ""
INT006 = BYTE011
BYTE009 = 1
BYTE010 = 8
Gosub LABEL014
STRING022 = STRING023
If (STRING022 <> "") Gosub LABEL018
BYTE008 = Asc(Mid(STRING028, 32, 1)) - Asc(Mid(STRING028, 11, 1))
If ((CurSec() < INT001) || (CurSec() > INT002)) Then
DispStr STRING010
Newline
Stop
Endif
Print "Initializing data..."
STRING007 = Upper(STRING007)
TSTRING015(BYTE007) = Upper(TSTRING015(BYTE007))
STRING040 = Mask_Ascii() + "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
If (BYTE008 <> TBYTE014(2) + TBYTE014(4)) Stop
BYTE001 = 0
Gosub LABEL016
Print Chr(13)
If (INTEGER004 == INTEGER003 * INT008) Then
PrintLn "@X0FRegistered to: @X0E", STRING038, "@X0F"
Else
Print "@X0FUnregistered Evaluation Copy for [@X0E", STRING007, "@X0F] "
For INT005 = 1 To TBYTE014(2)
ResetDisp
If (INT005 % TBYTE014(4) == 0) Then
Print "@X08.@X0F"
Continue
Endif
Delay BYTE008
Next
ResetDisp
Newline
Endif
Newline
STRING007 = U_Name()
If (STRING008 <> "") Then
If (Exist(STRING008)) DispFile STRING008, 4 + 2 + 1
Endif
If (STRING011 <> "") Then
STRING027 = YesChar()
InputYN STRING011, STRING027, BYTE019
Newline
If (STRING027 == NoChar()) Then
If (INT003 > -1) Gosub LABEL022
Stop
Endif
Endif
If (STRING044 <> "") Then
BYTE024 = 7
BYTE002 = 7
STRING027 = STRING044
Gosub LABEL031
Endif
BYTE002 = 0
STRING027 = STRING016
If (STRING027 <> "") Gosub LABEL031
BOOLEAN018 = 0
BOOLEAN019 = 0
STRING023 = ""
While (BYTE007 > 0) Do
If (TSTRING015(BYTE007) == "") Goto LABEL002
Gosub LABEL019
FOpen BYTE007, TSTRING015(BYTE007), 0, 0
TSTRING015(BYTE007) = ""
TINTEGER006(BYTE007) = 0
:LABEL002
BOOLEAN017 = BOOLEAN018
BOOLEAN015 = BOOLEAN019
BOOLEAN022 = 0
STRING037 = ""
:LABEL003
If (BOOLEAN015) Goto LABEL007
STRING021 = ""
If (STRING023 <> "") Then
STRING022 = STRING023
STRING023 = ""
Else
STRING022 = ""
Endif
FGet BYTE007, STRING027
BOOLEAN015 = (STRING027 == "")
If (BOOLEAN015) Goto LABEL007
BYTE001 = InStr(">%@RIMJBCSWDT!*$:P?¿", Left(STRING027, 1))
If ((BYTE001 == 0) || (BOOLEAN017 && (BYTE001 < 18))) Goto LABEL006
STRING011 = Mid(STRING027, TBYTE014(4), Len(STRING027) - 1)
If ((BYTE001 > 5) && (BYTE001 < 17)) Then
Tokenize Replace(STRING027, " ", STRING039)
GetToken STRING028
INT006 = Strip(GetToken(), STRING039)
Endif
If ((BYTE001 >= 1) && (BYTE001 <= 3)) Then
If (BYTE001 < 3) FPutLn BYTE002, STRING011
If (BYTE001 > 1) Then
If (Left(STRING011, 1) <> "%") Then
STRING011 = STRING011 + STRING012
Endif
DispStr STRING011
Endif
Else
Select Case (BYTE001)
Case 4
DispFile STRING011, 4 + 2 + 1
Case 5
Log STRING011, 0
Case 6, 7
Select Case (INT006)
Case 1
BOOLEAN016 = BYTE003
Case 2
BOOLEAN016 = !BYTE003
Case 3
BOOLEAN016 = !BOOLEAN020
Case 4
BOOLEAN016 = (BYTE003 && !BOOLEAN020)
Case 5
BOOLEAN016 = (!BYTE003 && !BOOLEAN020)
Case Else
BOOLEAN016 = 1
End Select
If (BOOLEAN016) Then
If (BYTE001 == 7) Gosub LABEL009
Gosub LABEL010
Gosub LABEL022
Endif
Case 8
INT006 = Strip(GetToken(), STRING039)
STRING041 = Replace(GetToken(), STRING039, " ")
STRING042 = Replace(GetToken(), STRING039, " ")
STRING043 = Replace(GetToken(), STRING039, " ")
STRING028 = Strip(GetToken(), STRING039)
BOOLEAN006 = Strip(GetToken(), STRING039)
BOOLEAN007 = Strip(GetToken(), STRING039)
DATE003 = Strip(GetToken(), STRING039)
STRING018 = Strip(GetToken(), STRING039)
If ((STRING018 == "") && (BYTE024 > 0)) Then
STRING018 = STRING044
FClose BYTE024
Endif
Message INT006, STRING041, STRING042, STRING043, STRING028, BOOLEAN006, BOOLEAN007, DATE003, STRING018
If ((STRING018 == "") && (BYTE024 > 0)) FAppend BYTE024, STRING044, 2, 0
Case 9
LastIn Strip(GetToken(), STRING039)
Case 10
Gosub LABEL011
If (BOOLEAN016) Then
STRING021 = STRING019
Else
STRING021 = STRING020
Endif
Case 11
Gosub LABEL011
If (BOOLEAN016) Then
If (STRING019 <> "") Call STRING019 + " " + STRING036
Endif
Case 12
Gosub LABEL011
If (BOOLEAN016) Then
If (STRING019 <> "") Then
WrUSys
Shell 0, TINTEGER006(BYTE007), STRING019, STRING036
RdUSys
Endif
Endif
Case 13
Gosub LABEL011
Gosub LABEL012
STRING030 = Left(LastAns(), BYTE010)
Select Case (INT006)
Case 1
U_Cmnt1 = Left(U_Cmnt1, BYTE009 - 1) + STRING030 + Right(U_Cmnt1, 31 - BYTE009 - BYTE010)
Case 2
U_Cmnt2 = Left(U_Cmnt2, BYTE009 - 1) + STRING030 + Right(U_Cmnt2, 31 - BYTE009 - BYTE010)
Case 3
U_Ver = Left(U_Ver, BYTE009 - 1) + STRING030 + Right(U_Ver, 26 - BYTE009 - BYTE010)
Case 4, 8
U_Notes(INT006 - 4) = Left(U_Notes(INT006 - 4), BYTE009 - 1) + STRING030 + Right(U_Notes(INT006 - 4), 61 - BYTE009 - BYTE010)
Case 9, 14
U_Addr(INT006 - 9) = Left(U_Addr(INT006 - 9), BYTE009 - 1) + STRING030 + Right(U_Addr(INT006 - 9), 61 - BYTE009 - BYTE010)
End Select
:LABEL004
BOOLEAN013 = 1
Case 14
Gosub LABEL011
Gosub LABEL014
Case 15
STRING018 = Strip(GetToken(), STRING039)
STRING019 = Strip(GetToken(), STRING039)
STRING020 = Strip(GetToken(), STRING039)
BYTE009 = 1
BYTE010 = TBYTE015(INT006)
Gosub LABEL014
STRING022 = STRING023
If (STRING018 <> "") Gosub LABEL015
Gosub LABEL012
STRING023 = ""
Case 16
BOOLEAN016 = GetToken()
STRING018 = Strip(GetToken(), STRING039)
STRING046 = Strip(GetToken(), STRING039)
STRING047 = Strip(GetToken(), STRING039)
STRING019 = Strip(GetToken(), STRING039)
STRING020 = Strip(GetToken(), STRING039)
Gosub LABEL032
Case 17
Gosub LABEL016
If (BOOLEAN012) Then
PrintLn "@X0CSysop: @X0F", STRING007
PrintLn "@X0C BBS: @X0F", STRING038
PrintLn "@X0CYour Registration Number is: [@X0F", INTEGER003 * INT008, "@X0C]"
Endif
Case 18
If (STRING037 == "") Then
BOOLEAN017 = 0
BOOLEAN018 = 0
Endif
Case 19
If (STRING037 == Upper(STRING011)) Then
BOOLEAN017 = 0
BOOLEAN018 = 0
STRING037 = ""
Endif
Case 20
BOOLEAN022 = STRING011
FGet BYTE007, STRING017
Tokenize Replace(STRING017, " ", STRING039)
GetToken STRING024
GetToken BYTE009
GetToken BYTE010
STRING027 = Strip(GetToken(), STRING039)
If (STRING022 == "") Then
STRING022 = Replace(GetToken(), STRING039, " ")
Else
GetToken STRING030
Endif
STRING018 = Strip(GetToken(), STRING039)
STRING019 = Strip(GetToken(), STRING039)
STRING020 = Strip(GetToken(), STRING039)
STRING045 = Strip(GetToken(), STRING039)
BOOLEAN021 = (STRING018 == "")
If (BOOLEAN002 && (!BOOLEAN017 || BOOLEAN004)) Then
If (BOOLEAN003) FPut BYTE002, "Q: "
FPutLn BYTE002, StripAtx(STRING011)
Endif
STRING029 = STRING040
If (STRING027 == "") Then
INTEGER005 = 70
Else
INTEGER005 = S2I(STRING027, TBYTE014(1 + InStr("HOB", Upper(Right(STRING027, 1)))))
Endif
BYTE003 = -1
BYTE006 = InStr("TPSDBCNYAV", Left(STRING024, 1))
If (BOOLEAN017) Then
If (BOOLEAN004) Then
If (BOOLEAN003) FPut BYTE002, "A: "
FPutLn BYTE002, "[N/A]"
Endif
ElseIf (BYTE006 == 1) Then
If (STRING024 <> "T") Then
STRING029 = ""
INT006 = 2
While (INT006 <= Len(STRING024)) Do
If (Upper(Mid(STRING024, INT006, 1)) == "E") Then
STRING029 = STRING029 + Mask_Ascii()
Goto LABEL005
Endif
If (Upper(Mid(STRING024, INT006, 1)) == "A") Then
STRING029 = STRING029 + Mask_Alpha()
Goto LABEL005
Endif
If (Upper(Mid(STRING024, INT006, 1)) == "N") Then
STRING029 = STRING029 + Mask_Num()
Goto LABEL005
Endif
If (Upper(Mid(STRING024, INT006, 1)) == "M") Then
STRING029 = STRING029 + Mask_Num() + ".$"
Goto LABEL005
Endif
If (Upper(Mid(STRING024, INT006, 1)) == Chr(46)) Then
STRING029 = STRING029 + ",.;:"
Goto LABEL005
Endif
If (Upper(Mid(STRING024, INT006, 1)) == "P") Then
STRING029 = STRING029 + Mask_Num() + "()[]+- "
Goto LABEL005
Endif
If (Upper(Mid(STRING024, INT006, 1)) == "S") Then
STRING029 = STRING029 + " "
Goto LABEL005
Endif
If (Upper(Mid(STRING024, INT006, 1)) == "+") Then
STRING029 = STRING029 + "+-"
Goto LABEL005
Endif
If (Upper(Mid(STRING024, INT006, 1)) == "^") Then
Inc INT006
STRING029 = STRING029 + Mid(STRING024, INT006, 1)
Goto LABEL005
Endif
:LABEL005
Inc INT006
EndWhile
Endif
If (BYTE010 == 0) Then
BYTE010 = 60
Endif
Gosub LABEL025
If ((BYTE006 == 1) && !BOOLEAN021) Gosub LABEL015
Else
If (BYTE006 > 0) Then
Gosub LABEL025
Endif
Endif
Gosub LABEL012
Case 22
STRING038 = STRING022
BOOLEAN012 = (INTEGER004 == 347618)
Endif
End Select
Select Case (Upper(STRING021))
Case "[STOP]"
BOOLEAN015 = 1
Case "[END]"
BOOLEAN015 = 1
BOOLEAN019 = 1
Case "[SKIP]"
BOOLEAN017 = 1
Case "[SKIPALL]"
BOOLEAN017 = 1
BOOLEAN018 = 1
Case ""
If (BYTE007 > 4) Then
STRING027 = "PPE-Script: Too many levels " + STRING021
PrintLn STRING027
Log STRING027, 0
Else
Inc BYTE007
TSTRING015(BYTE007) = STRING021
Goto LABEL007
Endif
Case "[", "]"
BOOLEAN017 = 1
STRING037 = Mid(STRING021, 2, Len(STRING021) - 2)
If (BOOLEAN005) FSeek BYTE007, 0, 0
End Select
:LABEL006
Goto LABEL003
:LABEL007
FClose BYTE007
If (BOOLEAN015) Dec BYTE007
EndWhile
If (BYTE002 > 0) FClose BYTE002
If (BYTE024 > 0) Then
FClose BYTE024
Delete STRING044
Endif
If (BOOLEAN020 && BOOLEAN001) Then
STRING027 = "PPE-Script: User failed to answer " + String(INT009) + " question(s)!"
Log STRING027, 0
Endif
DispStr STRING013
Newline
If (BOOLEAN013) Then
PutUser
Endif
End
:LABEL008
GetToken STRING027
If (Left(STRING027, 1) == "@") Then
BYTE018 = S2I(Right(STRING027, 2), TBYTE014(2))
Else
BYTE018 = STRING027
Endif
Return
:LABEL009
If (INT006 > 127) Then
INT006 = INT006 - 128
INT005 = TINTEGER006(BYTE007)
If (INT005 < 1) INT005 = 1
Else
INT005 = 1
Endif
GetToken STRING018
If (!Exist(STRING018)) STRING018 = STRING014 + STRING018
If (Exist(STRING018)) Then
STRING027 = ReadLine(STRING018, INT005)
FClose -1
If (STRING027 <> "") Tokenize Replace(STRING027, " ", STRING039)
Endif
Return
:LABEL010
INT003 = -1
INT004 = -1
INTEGER007 = -1
STRING030 = Strip(GetToken(), STRING039)
If (STRING030 <> "") INT003 = STRING030
STRING030 = Strip(GetToken(), STRING039)
If (STRING030 <> "") INT004 = STRING030
STRING030 = Strip(GetToken(), STRING039)
If (STRING030 <> "") INTEGER007 = STRING030
STRING030 = Strip(GetToken(), STRING039)
If (STRING030 == "X") Then
INTEGER008 = -U_Fdl()
Else
INTEGER008 = STRING030
Endif
STRING030 = Strip(GetToken(), STRING039)
If (STRING030 == "X") Then
INTEGER009 = -U_Bdl()
Else
INTEGER009 = STRING030
Endif
STRING030 = Strip(GetToken(), STRING039)
If (STRING030 == "X") Then
INTEGER010 = -U_BdlDay()
Else
INTEGER010 = STRING030
Endif
INTEGER011 = Strip(GetToken(), STRING039)
STRING025 = Strip(GetToken(), STRING039)
STRING026 = Strip(GetToken(), STRING039)
Return
:LABEL011
GetToken BYTE009
GetToken BYTE010
STRING019 = Strip(GetToken(), STRING039)
STRING020 = Strip(GetToken(), STRING039)
If (BYTE001 > 12) Return
INT005 = INT006
INT006 = (INT006 && 127)
Select Case (INT006)
Case 0
BOOLEAN016 = 1
Case 1
BOOLEAN016 = BYTE003
Case 2
Gosub LABEL021
Case 3
If (INT005 > 127) Then
BOOLEAN016 = !(STRING032 == Mid(STRING009, 2, 1))
Else
BOOLEAN016 = (STRING032 == Left(STRING009, 1))
Endif
Case 4
BOOLEAN016 = ((U_Sec >= BYTE009) && (U_Sec <= BYTE010))
Case 5
BOOLEAN016 = ((U_Logons() >= BYTE009) && (U_Logons() <= BYTE010))
Case Else
BOOLEAN016 = ((TINTEGER006(BYTE007) >= BYTE009) && (TINTEGER006(BYTE007) <= BYTE010))
End Select
If (INT005 > 127) BOOLEAN016 = ! BOOLEAN016
If (BYTE001 > 10) Then
INT005 = 0
STRING036 = ""
For INT007 = 1 To Len(STRING027)
If (Mid(STRING027, INT007, 1) == ";") Then
Inc INT005
If (INT005 > 4) Then
STRING036 = Replace(Right(STRING027, Len(STRING027) - INT007), STRING039, " ")
Break
Endif
Endif
Next
Endif
Return
:LABEL012
Select Case (BYTE003)
Case 1
STRING021 = STRING019
Case 0
STRING021 = STRING020
End Select
:LABEL013
Return
:LABEL014
Select Case (INT006)
Case 1
STRING023 = Mid(U_Cmnt1, BYTE009, BYTE010)
Case 2
STRING023 = Mid(U_Cmnt2, BYTE009, BYTE010)
Case 3
STRING023 = Mid(U_Ver, BYTE009, BYTE010)
Case 4, 8
STRING023 = Mid(U_Notes(INT006 - 4), BYTE009, BYTE010)
Case 9, 14
STRING023 = Mid(U_Addr(INT006 - 9), BYTE009, BYTE010)
Case 15
STRING023 = Mid(U_Name(), BYTE009, BYTE010)
Case 16
STRING023 = Mid(U_Alias, BYTE009, BYTE010)
Case 17
STRING023 = Mid(U_Pwd, BYTE009, BYTE010)
Case 18
STRING023 = Mid(U_City, BYTE009, BYTE010)
Case 19
STRING023 = Mid(U_BDPhone, BYTE009, BYTE010)
Case 20
STRING023 = Mid(U_HVPhone, BYTE009, BYTE010)
Case Else
STRING023 = ""
End Select
Return
:LABEL015
BYTE003 = 0
If (!Exist(STRING018)) STRING018 = STRING014 + STRING018
If (Exist(STRING018)) Then
FOpen 6, STRING018, 0, 0
STRING028 = RTrim(Upper(STRING022), " ")
FGet 6, STRING027
While ((STRING027 <> "") && !BYTE003) Do
STRING027 = RTrim(Upper(STRING027), " ")
BOOLEAN011 = (Left(STRING027, 1) == "*")
If (BOOLEAN011) Then
BYTE003 = (STRING028 == Mid(STRING027, 2, Len(STRING027) - 1))
Else
BYTE003 = (InStr(STRING028, STRING027) > 0)
Endif
FGet 6, STRING027
EndWhile
FClose 6
Else
STRING027 = "PPE-Script: Missing List: " + STRING018
PrintLn STRING027
Log STRING027, 0
Endif
Return
:LABEL016
INTEGER003 = 0
STRING027 = Strip(STRING038, " ")
Gosub LABEL017
If (BYTE001 == 0) Print "."
STRING027 = Trim(STRING007, " ")
:LABEL017
STRING027 = Upper(STRING027)
INT006 = Len(STRING027)
BYTE017 = 0
For INT005 = 1 To INT006
BYTE016 = Asc(Mid(STRING027, INT005, 1))
INTEGER003 = INTEGER003 + XOr(BYTE016, BYTE017)
BYTE017 = BYTE016
Next
Return
:LABEL018
DATE002 = STRING022
BYTE012 = ((Date() - DATE002 + 36525 * (Year(STRING022) > 1999)) * 100) / 36525
Return
:LABEL019
If (Right(STRING014, 1) <> "\") STRING014 = STRING014 + "\"
STRING027 = STRING014 + TSTRING015(BYTE007)
If (Right(TSTRING015(BYTE007), 4) == ".DAT") Then
STRING027 = Left(STRING027, Len(STRING027) - 4)
Endif
If (Exist(STRING027 + LangExt())) Then
TSTRING015(BYTE007) = STRING027 + LangExt()
ElseIf (Exist(STRING027)) Then
TSTRING015(BYTE007) = STRING027
ElseIf (InStr(TSTRING015(BYTE007), "\") == 0) Then
TSTRING015(BYTE007) = STRING027 + ".DAT"
Endif
If (Exist(TSTRING015(BYTE007))) Goto LABEL020
STRING027 = "PPE-Script: Missing Script: " + TSTRING015(BYTE007)
PrintLn STRING027
Log STRING027, 0
Stop
:LABEL020
Return
:LABEL021
If (BYTE010 == 0) BYTE010 = 255
BOOLEAN016 = ((BYTE012 >= BYTE009) && (BYTE012 <= BYTE010))
Return
:LABEL022
If (INT003 > -1) Then
U_Sec = INT003
If (BOOLEAN001) Then
STRING027 = "PPE-Script: User level set to: " + String(INT003)
Log STRING027, 0
Endif
Endif
If (INT004 > -1) U_ExpSec = INT004
If (INTEGER007 > -1) U_ExpDate = Date() + INTEGER007
If (INTEGER008 <> 0) AdjTFiles INTEGER008
If (INTEGER009 <> 0) AdjTBytes INTEGER009
If (INTEGER010 <> 0) AdjDBytes INTEGER010
If (EvtTimeAdj()) Goto LABEL023
If (INTEGER011 <> 0) AdjTime INTEGER011
:LABEL023
If (STRING025 <> "") Then
If (BOOLEAN001) Then
STRING027 = "PPE-Script: User registered in: " + STRING025
Log STRING027, 0
Endif
STRING027 = STRING025
BYTE005 = 1
Gosub LABEL024
Endif
If (STRING026 <> "") Then
STRING027 = STRING026
BYTE005 = 2
Gosub LABEL024
Endif
BOOLEAN013 = 1
Return
:LABEL024
STRING027 = Replace(STRING027, ",", ";")
Tokenize STRING027
STRING031 = "-"
While (STRING031 <> "") Do
GetToken STRING031
If (STRING031 <> "") Then
INT006 = InStr(STRING031, "-")
If (INT006 > 0) Then
For INT005 = Left(STRING031, INT006 - 1) To Mid(STRING031, INT006 + 1, Len(STRING031) - INT006)
ConfFlag INT005, BYTE005
Next
Continue
Endif
ConfFlag STRING031, BYTE005
Endif
EndWhile
Return
:LABEL025
BOOLEAN016 = 0
BYTE004 = 0
Select Case (BYTE006)
Case 2
STRING029 = Mask_Num() + "()[]-+ "
BYTE010 = 12
Case 3
If (BOOLEAN021) Then
STRING029 = STRING009 + " "
Else
STRING029 = STRING018
Endif
BYTE010 = 1
INTEGER005 = Or(INTEGER005, 8)
Case 8
BYTE010 = 1
Case 10
If (BYTE010 == 0) BYTE010 = 25
End Select
:LABEL026
If ((STRING045 <> "") && (InStr(STRING029, "?") == 0)) STRING029 = STRING029 + "?"
STRING035 = STRING011
While (!BOOLEAN016 && (BYTE004 < BYTE013)) Do
If (Right(STRING035, 1) == "?") Then
Color BYTE019
Print Left(STRING035, 73)
STRING011 = ""
If ((BYTE006 == 5) || (BYTE006 == 7)) Then
Newline
Goto LABEL028
Endif
If (BOOLEAN008) Then
Color BYTE021
Print "Min=", BYTE009
Endif
Newline
If (BOOLEAN009) Then
Color BYTE022
If (!AnsiOn() || (And(INTEGER005, 2) == 0)) Then
Print " ("
Goto LABEL027
Endif
Print " "
:LABEL027
Print Left(STRING033, BYTE009)
Color BYTE023
Print Left(STRING034, BYTE010 - BYTE009)
If (!AnsiOn() || (And(INTEGER005, 2) == 0)) Then
INTEGER005 = (INTEGER005 && !4)
PrintLn ")"
Goto LABEL028
Endif
PrintLn ""
Endif
Endif
:LABEL028
Color BYTE020
If ((BYTE006 >= 1) && (BYTE006 <= 3)) Then
InputStr STRING011, STRING022, BYTE019, BYTE010, STRING029, INTEGER005
If (BYTE006 == 3) Then
If (STRING022 == "") STRING022 = " "
BYTE003 = (InStr(STRING029, STRING022) == 1)
BOOLEAN016 = ((Len(STRING022) >= BYTE009) && (InStr(STRING029, STRING022) > 0))
Else
BOOLEAN016 = (Len(STRING022) >= BYTE009)
Endif
Else
Select Case (BYTE006)
Case 4, 5
InputDate STRING011, STRING022, BYTE019
DATE002 = STRING022
STRING022 = DATE002
BOOLEAN016 = ValDate(STRING022)
If (STRING027 <> "") Then
BOOLEAN016 = 1
ElseIf (BOOLEAN016 && (BYTE006 == 5)) Then
Gosub LABEL018
Gosub LABEL021
If (!BOOLEAN021) BOOLEAN016 = BOOLEAN016 && (InStr(STRING018, STRING032) > 0)
BYTE003 = BOOLEAN016
BOOLEAN016 = 1
Endif
Case 6
InputCC STRING011, STRING022, BYTE019
BOOLEAN016 = FmtCC(BOOLEAN016)
BOOLEAN016 = ValCC(STRING022)
Case 7
InputInt STRING011, STRING022, BYTE019
TINTEGER006(BYTE007) = STRING022
BYTE003 = ((TINTEGER006(BYTE007) >= BYTE009) && (TINTEGER006(BYTE007) <= BYTE010))
BOOLEAN016 = (BYTE003 || !BOOLEAN021)
Case 8
InputYN STRING011, STRING022, BYTE019
BOOLEAN016 = (InStr(YesChar() + NoChar(), STRING022) > 0)
BYTE003 = (STRING022 == YesChar())
Case 9
InputInt STRING011, STRING022, BYTE019
BYTE003 = (STRING022 == BYTE012)
BOOLEAN016 = ((STRING022 > 0) || !BOOLEAN021)
Case 10
If (STRING035 == "") Then
PromptStr 707, STRING022, BYTE010, STRING029, INTEGER005
Goto LABEL029
Endif
InputStr STRING011, STRING022, BYTE019, BYTE010, STRING029, INTEGER005
:LABEL029
BYTE003 = (STRING022 == U_Ver)
BOOLEAN016 = ((Len(STRING022) >= BYTE009) || !BOOLEAN021)
Endif
End Select
If (BYTE006 > 3) Newline
If ((STRING022 == "?") && (STRING045 <> "")) Then
BOOLEAN016 = 0
DispFile STRING045, 4 + 2 + 1
ElseIf (((STRING022 == "") && (BYTE009 > 0)) && (BYTE006 <> 7)) Then
BOOLEAN016 = 0
Inc BYTE004
If (BYTE004 < BYTE013) DispText 117, 2048 + 64
Else
If (BOOLEAN016) Goto LABEL030
Inc BYTE004
If (BYTE004 < BYTE013) DispText 56, 2048 + 64
Endif
:LABEL030
If (BYTE004 == BYTE013) Then
Color 12
Print "Attempt to answer has"
DispText 577, 2048 + 64
Endif
If (BOOLEAN010) Newline
EndWhile
DefColor
If (BOOLEAN003 && !BOOLEAN022) FPut BYTE002, "A: "
If ((BYTE024 > 0) && !BOOLEAN022) FPut BYTE024, "A: "
If (BOOLEAN016) Then
If (!BOOLEAN022) FPutLn BYTE002, STRING022
If ((BYTE024 > 0) && !BOOLEAN022) FPutLn BYTE024, STRING022
Else
If (!BOOLEAN022) FPutLn BYTE002, "[NO ANSWER]"
If ((BYTE024 > 0) && !BOOLEAN022) FPutLn BYTE024, "[NO ANSWER]"
BOOLEAN020 = 1
Inc INT009
Endif
Return
:LABEL031
FAppend BYTE002, STRING027, 2, 3
STRING027 = Space(62)
FPutLn BYTE002, Replace(STRING027, " ", "*")
FPut BYTE002, "From: ", U_Name(), ", "
FPut BYTE002, Date(), " (", Left(Time(), 5)
If (PcbNode() > 0) FPut BYTE002, ") Node ", PcbNode()
FPutLn BYTE002, " Sec ", U_Sec, " Exp ", U_ExpDate
Return
:LABEL032
BYTE003 = 0
STRING048 = CallId()
If (STRING048 == "") Return
If (BYTE025 == 0) Then
BYTE025 = InStr(STRING048, STRING049)
If (BYTE025 == 0) Return
BYTE026 = Len(STRING049)
Endif
INT006 = BYTE025 + BYTE026
If (BOOLEAN014) Then
Gosub LABEL033
Else
STRING027 = Mid(STRING048, INT006, 10)
Endif
STRING053 = Upper(Trim(Left(STRING027, 10), " "))
Select Case (STRING053)
Case STRING050
STRING021 = STRING046
Return
Case STRING051
STRING021 = STRING047
Return
Case 10
Return
End Select
STRING022 = Left(STRING053, 3) + "-" + Mid(STRING053, 4, 3) + "-" + Right(STRING053, 4)
Gosub LABEL015
Gosub LABEL012
If (((STRING052 <> "") && ((BOOLEAN016 == 1) && BYTE003)) || ((BOOLEAN016 == 0) && !BYTE003)) Then
FAppend 6, STRING052, 2, 3
FPutLn 6, STRING054, STRING022, STRING055, RTrim(U_Name(), " "), STRING055, Date(), " (PPE-SCR)", STRING054
FClose 6
Endif
BYTE003 = 1
Return
:LABEL033
STRING027 = ""
INT006 = INT006 + 2
BYTE027 = S2I(Mid(STRING048, INT006, 2), 16)
While (BYTE027 > 0) Do
INT006 = INT006 + 2
STRING027 = STRING027 + Chr(S2I(Mid(STRING048, INT006, 2), 16))
Dec BYTE027
EndWhile
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 1 End
; 6 Color
; 286 Goto
; 338 Let
; 12 Print
; 12 PrintLn
; 231 If
; 2 ConfFlag
; 3 DispFile
; 3 FOpen
; 3 FAppend
; 8 FClose
; 20 FGet
; 7 FPut
; 10 FPutLn
; 2 ResetDisp
; 1 GetUser
; 1 PutUser
; 1 DefColor
; 1 Delete
; 1 AdjTime
; 8 Log
; 2 InputStr
; 2 InputYN
; 2 InputInt
; 1 InputCC
; 1 InputDate
; 42 Gosub
; 23 Return
; 1 PromptStr
; 1 Delay
; 7 Inc
; 2 Dec
; 11 Newline
; 9 Tokenize
; 30 GetToken
; 1 Shell
; 3 DispText
; 5 Stop
; 1 Call
; 3 DispStr
; 1 WrUSys
; 1 RdUSys
; 1 Message
; 1 FSeek
; 1 LastIn
; 1 AdjDBytes
; 1 AdjTBytes
; 1 AdjTFiles
;
;
; ■ Functions used :
;
; 12 -
; 4 *
; 1 /
; 1 %
; 79 +
; 35 -
; 136 ==
; 32 <>
; 13 <
; 16 <=
; 34 >
; 22 >=
; 193 !
; 47 &&
; 16 ||
; 16 Len(
; 22 Upper()
; 35 Mid()
; 21 Left()
; 13 Right()
; 3 Space()
; 9 Chr()
; 3 Asc()
; 12 InStr()
; 3 RTrim()
; 2 Trim()
; 4 Date()
; 1 Time()
; 4 U_Name()
; 2 U_Logons()
; 1 U_Fdl()
; 1 U_BdlDay()
; 1 U_Bdl()
; 1 Year()
; 2 NoChar()
; 3 YesChar()
; 1 StripAtx()
; 14 Replace()
; 33 Strip()
; 2 String()
; 1 Mask_Alpha()
; 4 Mask_Num()
; 2 Mask_Ascii()
; 4 PPEPath()
; 1 ValDate()
; 2 PcbNode()
; 1 ReadLine()
; 2 CurSec()
; 38 GetToken()
; 1 CallId()
; 10 Exist()
; 4 S2I()
; 2 LangExt()
; 2 AnsiOn()
; 1 ValCC()
; 1 FmtCC()
; 2 And()
; 1 Or()
; 1 XOr()
; 5 DefColor()
; 1 PPEName()
; 1 LastAns()
; 1 EvtTimeAdj()
;
;------------------------------------------------------------------------------
;
; Analysis flags : FWASCaH
;
; F - Change conference flags status ■ 2
; This may be normal for a SELECT replacement but it may also be
; a way to get access to conferences a user is not allowed to.
; ■ Search for : CONFFLAG, CONFUNFLAG
;
; W - Write user ■ 5
; Program writes a user record. Although this may be normal for a
; User Editor, it may also be a way to modify an account level.
; ■ Search for : PUTUSER
;
; A - Adjust online time remaining ■ 5
; Program modify the amount of online time remaining, this may
; be a way to bypass time limits
; ■ Search for : ADJTIME
;
; S - Shell to DOS ■ 5
; This may be normal if the PPE need to execute an external command,
; but may be actually anything... nasty (formating HD, rebooting,...)
; or usefull (sorting, maintenance,...). Check!
; ■ Search for : SHELL
;
; C - Call child PPE ■ 3
; This is usually normal, but may be a tricky way to launch some
; sysop-only commands.
; ■ Search for : CALL
;
; a - Adjust ratio ■ 4
; User's ratio is adjusted by changing the amount of files/bytes
; uploaded. This may be normal for a user editor.
; ■ Search for : ADJBYTES, ADJDBYTES, ADJTBYTES, ADJTFILES
;
; H - Read Password or Password History ■ 5
; Program is reading the user's password or last password history
; This may be ok for a password manager, but it is very suspect. Check!
; ■ Search for : U_PWDHIST, U_PWD
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 4 For/Next
; 6 While/EndWhile
; 86 If/Then or If/Then/Else
; 10 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------